home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / PROGASIC / BASFILES.LZH / GETLINE.BAS < prev    next >
BASIC Source File  |  1988-09-10  |  2KB  |  68 lines

  1. '$INCLUDE:'QBTOOLS.INC'
  2. SUB GetLine (Disp%(), tr%, lc%, br%, rc%, crow%, ccol%, sl%(), addr%, atb%, el%) STATIC
  3.                                                   '  Number of elements in array
  4.         IF crow% > br% THEN                       '  It's past end
  5.             el% = 0                                '  No values
  6.             EXIT SUB
  7.         END IF
  8.  
  9.         addr% = (crow% - 1) * 80 + ccol%          '  get the address
  10.         ch% = Disp%(addr%)                        '  and the value at this add
  11.  
  12.         IF ccol% = rc% THEN                       '  Last column for the line
  13.             el% = 2
  14.             CALL SpltByte(ch%, sl%(2), sl%(1))     '  Split to attribute & character
  15.             atb% = 1                               '  No optimization
  16.             ccol% = lc%                            '  Increase to next line...
  17.             crow% = crow% + 1
  18.             EXIT SUB
  19.         END IF
  20.  
  21. '
  22. '  NOW, loop through the line, checking whether it's a OPTIMIZE or
  23. '        NORMAL type.
  24. '
  25.  
  26.         FOR k% = addr% + 1 TO (crow% - 1) * 80 + rc%       '  to end of line
  27.             IF Disp%(k%) <> ch% THEN
  28.                 EXIT FOR
  29.             END IF
  30.         NEXT k%
  31.  
  32.         k% = k% - 1                               '  To calculate the number
  33.  
  34.         dup% = k% - addr%                         '  Number of duplicates
  35.  
  36.         IF dup% = 0 THEN                          '  No duplicates
  37.            CALL SpltByte(ch%, sl%(2), sl%(1))     '  First value
  38.            el% = 2
  39.  
  40.            FOR k% = ccol% + 1 TO rc%
  41.                chd% = (crow% - 1) * 80 + k%
  42.                IF k% <> rc% THEN
  43.                   IF Disp%(chd%) = Disp%(chd% + 1) THEN
  44.                       EXIT FOR
  45.                   END IF
  46.                END IF
  47.                el% = el% + 2
  48.                CALL SpltByte(Disp%(chd%), sl%(el%), sl%(el% - 1))'
  49.            NEXT k%
  50.  
  51.            ccol% = k%
  52.  
  53.            IF ccol% > rc% THEN
  54.                 ccol% = lc%
  55.                 crow% = crow% + 1
  56.            END IF
  57.  
  58.            atb% = el% / 2
  59.         ELSE                                      '  Yes, there are duplicates
  60.             CALL SpltByte(ch%, sl%(2), sl%(1))     '
  61.             el% = 2
  62.             atb% = 128 + dup%
  63.             ccol% = ccol% + dup%
  64.         END IF
  65.  
  66. END SUB
  67.  
  68.